function judge=RDFS(I)
% 判断是否连通
% 并且两点之间距离是否有效
% input M=D+2 * D+2 dimension % 对角对称矩阵
M=size(I,1);%D=M-2;

% 从TU开始，到EOC

% 5KM 
near_distance=5;
state=zeros(M,M);

top=1;                  %堆栈顶
stack(top)=1;           %将第一个节点入栈

while top~=0  
    pre_len=length(stack);    %搜寻下一个节点前的堆栈长度
    i=stack(top);             %取堆栈顶节点
    
for j=1:M
  %第一行
   if i==1
       if I(i,j)>near_distance
           state(i,j)=1;
           continue % 继续进行下一列
       end     
   end
   
   
 % 第一行开始
    if state(i,j)==0 && I(i,j)>0 % 有数
        if j==M %到达目标EOC
            judge=1;      %% 只有一种情况为true
            return
        end        
        
            top=top+1;                          %扩展堆栈
            stack(top)=j;                       %新节点入栈
            state(i,j)=1;
            state(j,i)=1;
            break
            
    else %访问过或者没有数
        continue % 继续下一列操作   
    end
    

    
end 

if length(stack)==pre_len   %如果堆栈长度没有增加，则节点开始出栈
        stack(top)=[];
        top=top-1;
end   

end

% 都没有遍历到
judge=0;
end
